[Nemerle] Jak skopiować plik do końca
warlock
Wymagana wersja kompilatora: 0.2.0
Język: Nemerle
Strona domowa kompilatora (i dokumentacji): www.nemerle.org
Interfejs programu: Konsola
using System;
using System.IO;
class CopyFrom
{
public static Main () : void
{
def ProgType = array ["|","/","-","\\"];
Console.WriteLine("Ścieżka pliku źródlowego");
def cfrom = Console.ReadLine();
Console.WriteLine("Ścieżka docelowa: ");
def cto = Console.ReadLine();
def FsFrom = FileStream(cfrom, FileMode.Open, FileAccess.Read, FileShare.Read);
when(File.Exists(cto)) {
Console.WriteLine("Plik docelowy istnieje - sprawdzam, czy jest skopiowany do końca...");
}
def FsTo = FileStream(cto, FileMode.Append);
FsFrom.Position = FsTo.Length;
mutable BrFrom = BinaryReader(FsFrom);
mutable BrTo = BinaryWriter(FsTo);
mutable Progress = 0;
mutable BL = 6144; // wielkość bufforu - 60 kB
Console.WriteLine("Kopiuje plik {0} do {1}",cfrom,cto);
while (FsFrom.Length != FsFrom.Position) {
when ((Convert.ToInt32(FsFrom.Length) - Convert.ToInt32(FsFrom.Position)) < BL) {
BL = Convert.ToInt32(FsFrom.Length) - Convert.ToInt32(FsFrom.Position);
}
BrTo.Write(BrFrom.ReadBytes(BL));
when(Progress == 3) {
Progress = 0;
}
Console.Write("\b");
Console.Write(ProgType[Progress]);
++Progress;
}
BrTo.Close();
BrFrom.Close();
Console.WriteLine("\bPlik został skopiowany!");
}
}
Chyba powinieneś zrobić osobny dział Nemerle albo powinien powstać jakiś dział .NET bo z pogranicza troche nie pasuje :/